<?php
/**
 * EDM 类
 */
class EDM 
{
	protected $_edm_content;
    
	/**
	 * 生成具体类型的邮件内容的生产者: 
	 * 生产者可以有若干个，团购内容生产者，抢购内容生产者，专题内容生产者。。。
     */
    public static function factory ($type)
	{
		switch ($type) 
		{
			case 'tuan' :
				return new EDM_Tuan;
				break;

			case 'qiang' :
				return new EDM_Qiang;
				break;

			default :
				throw new SCException("非法的EDM参数");
				break;
		}
	}
    
	/**
	 * 生产邮件内容
	 *
	 * @return	object
	 */
    public function build_content ($pid, $open_id)
    {
        $data = $this->edm_data();
        $tpl  = $this->edm_tpl ();

		try {

			$this->_edm_content = View::factory($tpl)
					->set('edm_data', $data)
					->set('edm_pid',  $pid)
					->set('edm_oid',  $open_id)
					->render();
		}
		catch (Exception $e)
		{
			//
		}
	
        return $this;
    }

    /**
	 * 获取邮件内容
	 *
	 * @return	string
	 */
    public function get_content ()
    {
        return $this->_edm_content;
    }

    /**
	 * 保存邮件内容
	 *
	 * @param	string	file path
	 * @return	boolean
	 */
    public function save ($path)
    {
        $bytes = file_put_contents ($path, $this->_edm_content);
		if (FALSE === $bytes)
		{
			return FALSE;
		}
		else
		{
			$this->save_successfully();
			return TRUE;
		}
    }

    /**
	 * 获取邮件内容的结构化数据 
	 *
	 * @Override
	 * @return	Array
	 */
    protected function edm_data ()
	{
		return array();
	}

    /**
	 * 获取邮件内容的EDM模板路径
	 *
	 * @Override
	 * @return	string
	 */
    protected function edm_tpl ()
	{
		return '';
	}

	/**
	 * 邮件内容模板保存成功后，调用该函数，处理额外工作
	 *
	 * @return	void
	 */
	protected function save_successfully()
	{
	}
}

